package basic_grammar

import (
	"fmt"
	"math"
	"math/cmplx"
)

/*
基础类型

bool，string

(u)int,(u)int8,(u)int16,(u)int32,(u)int64,uintptr

byte(1字节8位,相当于uint8),rune(4字节32位，相当于int32)

float32,float64,complex64(实部和虚部为32位),complex128(实部和虚部为64位)

*/

func DataTypeExample() {
	testComplex()
}

func testComplex() {
	c := 3 + 4i
	lengthC := cmplx.Abs(c)
	fmt.Println(lengthC)
	fmt.Printf("c is %v,%T\n", c, c)

	otherC := complex(5, 12)

	fmt.Println(cmplx.Abs(otherC))
	fmt.Printf("otherC is %v,%T\n", otherC, otherC)
}

// 类型转换
// Golang中需要显式转换
// T(v)将值v转为类型T
/*
注意:
数据类型可以小转大,也可以大转小,但有可能数据溢出
*/

func triangle() {
	a, b := 3, 4
	var c int
	c = int(math.Sqrt(float64(a*a + b*b)))
	fmt.Print(c)
}
